package com.gitee.feizns.quickstart.easy.captcha;

import com.wf.captcha.ArithmeticCaptcha;
import com.wf.captcha.ChineseCaptcha;
import com.wf.captcha.ChineseGifCaptcha;
import com.wf.captcha.GifCaptcha;
import com.wf.captcha.SpecCaptcha;

/**
 * 验证码生成
 * @link <a href="https://gitee.com/ele-admin/EasyCaptcha">验证码生成：EasyCaptcha</a>
 * @author feizns
 * @since 2025/4/16
 */
public class EasyCaptcha {

    /**
     * 数字验证码
     * @return {@link SpecCaptcha }
     */
    public static SpecCaptcha number() {
        SpecCaptcha spec = spec();
        spec.setCharType(SpecCaptcha.TYPE_ONLY_NUMBER);
        return spec;
    }

    /**
     * 数字验证码
     * @return {@link SpecCaptcha }
     */
    public static SpecCaptcha number(int len) {
        SpecCaptcha spec = spec(len);
        spec.setCharType(SpecCaptcha.TYPE_ONLY_NUMBER);
        return spec;
    }

    /**
     * 字符验证码（png类型）
     * @return {@link SpecCaptcha }
     */
    public static SpecCaptcha spec() {
        return new SpecCaptcha();
    }

    /**
     * 字符验证码（png类型）
     * @return {@link SpecCaptcha}
     */
    public static SpecCaptcha spec(int len) {
        SpecCaptcha captcha = spec();
        captcha.setLen(len);
        return captcha;
    }

    /**
     * 字符验证码（png类型）
     * @param width 宽度
     * @param height 高度
     * @return {@link SpecCaptcha}
     */
    public static SpecCaptcha spec(int width, int height, int len) {
        return new SpecCaptcha(width, height, len);
    }

    /**
     * 字符验证码（gif类型）
     * @return {@link GifCaptcha}
     */
    public static GifCaptcha gif() {
        return new GifCaptcha();
    }

    /**
     * 字符验证码（gif类型）
     * @param width 宽度
     * @param height 高度
     * @return {@link GifCaptcha}
     */
    public static GifCaptcha gif(int width, int height) {
        return new GifCaptcha(width, height);
    }

    /**
     * 中文类型
     * @return {@link GifCaptcha}
     */
    public static ChineseCaptcha chinese() {
        return new ChineseCaptcha();
    }

    /**
     * 中文类型
     * @param width 宽度
     * @param height 高度
     * @return {@link GifCaptcha}
     */
    public static ChineseCaptcha chinese(int width, int height) {
        return new ChineseCaptcha(width, height);
    }

    /**
     * 中文类型（gif类型）
     * @return {@link GifCaptcha}
     */
    public static ChineseGifCaptcha chineseGif() {
        return new ChineseGifCaptcha();
    }

    /**
     * 中文类型（gif类型）
     * @param width 宽度
     * @param height 高度
     * @return {@link GifCaptcha}
     */
    public static ChineseGifCaptcha chineseGif(int width, int height) {
        return new ChineseGifCaptcha(width, height);
    }

    /**
     * 算术类型
     * @return {@link GifCaptcha}
     */
    public static ArithmeticCaptcha arithmetic() {
        return new ArithmeticCaptcha();
    }

    /**
     * 算术类型
     * @param width 宽度
     * @param height 高度
     * @return {@link GifCaptcha}
     */
    public static ArithmeticCaptcha arithmetic(int width, int height) {
        return new ArithmeticCaptcha(width, height);
    }

}
